This ZIP file should contain the following files: 1) CALLING.MAK 2) CALLING.FRM 3) CALLING.BAS 4) CALLED.MAK 5) CALLED.FRM 6) CALLED.MAK 7) MODALEXE.DLL 8) MODALEXE.TXT In order to run the demo, create "CALLING.EXE" and "CALLED.MAK" and place them in the same directory as MODALEXE.DLL. "CALLING" will call "CALLED" as a modal dialog box. "CALLING" could just as easily be a Word or Excel macro. How it works: CALLING.EXE runs the DLL function "MakeEXEModal", passing its own window handle and the command line of the called application. The DLL creates an extremely small dialog box which in turn runs the command line which was passed adding an extra parameter onto the end. The extra parameter is the string "/hdlg=" followed by the window handle of the dialog box. The called application runs a timer loop until it notices that the dialog box is complete (this must be done because the dialog box will not respond to messages until it is completely up). When it is complete, it runs the ShowWindow command to hide the dialog box. When the called application finishes, it send a message to the dialog box to destroy itself. You can examine CALLING and CALLED to see how the DLL works. The responsibility of the calling application is simply to pass its window handle and the name of the EXE which it wants to run modally. The responsibility of the called application is to retrieve the window handle of the "dummy" dialog box, hide it, and then (most importantly) delete it when finished. The sample apps "CALLING" and "CALLED" show how to do this. The function you will call from the DLL is as follows: INT MakeEXEModal (INT hwnd, LPSTR cmdline, LPSTR title) where: hwnd -the window handle of the calling application cmdline -the command line (including parameters) of the application that will be run modally title -not in use, pass a NULL (chr$(0)) Some API calls to Window will be needed in the called application: ShowWindow - to hide the dummy dialog box SendMessage - to send the "destroy" message to the dummy dialog box IsWindow - to determine the status of the dummy dialog box This is the first version of MODALEXE. I am working on a method that will not require the called application to do any special coding, but this is what I have for now. USE AT YOUR OWN RISK! It is important to note that if the called application aborts in such a way as to not send the destroy message (using SendMessage) to the dummy dialog box, the calling application will be locked up and you will have to reboot! Send me your suggestions and/or comments. I am at 70720,3425.